//1.中序遍历
class Solution {
public:
    int count=0;
    int ret=-1;
    void inorder(TreeNode* root, int k) {
        if(root==nullptr || count >=k) return; // count >=k -> 停止后续查找了，要不然还继续向下操作，扼杀在开始

        inorder(root->left, k);
        count++;
        if(count==k) {
            ret = root->val;
            return;
        }
        inorder(root->right, k);

        return ;
    }


    int kthSmallest(TreeNode* root, int k) {
        inorder(root, k);
        return ret;
    }
};

//2.了解方法二：记录子树的结点数（构造麻烦，思路简单），知道方法三：平衡二叉搜索树